### Post-Compile Weaving (Добавление аспектов после компиляции)

#### Описание

В данном примере показано подключение библиотеки AspectJ в качестве плагина к одной из подключенных зависимостей проекта.

Зависимость для наблюдения указывается в плагине **aspectj-maven-plugin** в секции `<weaveDependencies>`.

В примере происходит подключение аспектов через *.java классы.

Класс `AllMethodAspectWeaver.java` осуществляет наблюдение за всеми методами, оставлен для примера.
А класс `RestAssuredAspectWeaver.java` осуществляет наблюдение за методами из зависимости, которая указана в конфигурации 
плагина, как наблюдаемая.

При подключении плагина **aspectj-maven-plugin** не нужно добавлять и настраивать файл 
`\src\main\resources\META-INF\aop.xml` (или `aop-ajc.xml`).

#### Подключение

Порядок подключения:
* в `pom.xml` добавить зависимость `aspectjrt`
* в `pom.xml` добавить плагин `aspectj-maven-plugin` и настроить его:
    * указать цель для запуска: compile (запуск метода **main()**) или test-compile (запуск тестов), так же возможно
      отдельно настроить параметры для каждого вида запуска
    * указать зависимость или зависимости, для которых необходим просмотр аспектами в секции `weaveDependencies`
* добавить классы аспектов как `*.aj` или `*.java` и создать необходимые методы

#### Запуск

Способ запуска: основное приложение и тесты.

Запуск основного приложения **main()** (для запуска добавить плагин `exec-maven-plugin` и указать **mainClass**):
> mvn clean -pl=weaving-post-compile compile exec:java

Запуск теста:
> mvn clean test -pl=weaving-post-compile

#### Дополнительно

Подробное описание данного вида подключения описано в [документации](https://www.mojohaus.org/aspectj-maven-plugin/examples/weaveJars.html).

Подключение и настройка плагина описана в модуле проекта **weaving-compile-time**.